<?php


require_once "classes/Contrat.php";
require_once "SC/SCcontrat.php";
require_once "SC/SCcontratPension.php";
require_once "SC/SCcontratAdoptionProvisoire.php";
require_once "SC/SCcontratCessionPropriete.php";
require_once "SC/SCcontratPlacement.php";
require_once "SC/SCcontratRestitution.php";
require_once 'config.php';
/**
 * Classe permettant de gérer les metier du service Applicatif Personne 
 */
class SFContrat {
    

    /*****************************AJOUTER**************************************/
    
    /**
     * Methode pour ajouter un contrat à la BD
     * @param Contrat unContrat a mémoriser
     * @return Message contratMémorisé
     */
    public function ajouterContrat($unContrat) {
        $unContratMemorise = NULL;
       
        $SCcontrat = new SCcontrat();
        $unContratMemorise = $SCcontrat->ajouter($unContrat);
        
        return $unContratMemorise;
    }
    
    /**
     * Methode pour ajouter un contrat de pension à la BD
     * @param Contrat contrat
     * @param Pension contratPension a mémoriser
     * @return Pension $unContratPensionMemorise
     */
    
    public function ajouterContratPension(Contrat $contrat, Pension $contratPension) {
        $unContratPensionMemorise = NULL;
        
        $contratPension->setContrat_id($contrat->getId());

        $SCcontratPension = new SCcontratPension();
        $unContratPensionMemorise = $SCcontratPension->ajouter($contratPension);

        return $unContratPensionMemorise;
    }
 
    /*
    public function ajouterContratPension(Pension $contratPension) {
        $unContratPensionMemorise = NULL;
        $SCcontratPension = new SCcontratPension();
        $unContratPensionMemorise = $SCcontratPension->ajouter($contratPension);

        return $unContratPensionMemorise;
    }
    
     /**
     * Methode pour ajouter un contrat d'adoption provisoire à la BD
     * @param Contrat contrat
     * @param AdoptionProvisoire contratAdoptionProvisoire a mémoriser
     * @return AdoptionProvisoire $unContratAdoptionProvisoireMémorisé
     */
    public function ajouterContratAdoptionProvisoire(Contrat $contrat, AdoptionProvisoire $contratAdoptionProvisoire) {
        $unContratAdoptionProvisoireMemorise = NULL;
       
        $contratAdoptionProvisoire->setContrat_id($contrat->getId());
        
        $SCcontratAdoption = new SCcontratAdoptionProvisoire();
        $unContratAdoptionProvisoireMemorise = $SCcontratAdoption->ajouter($contratAdoptionProvisoire);

        return $unContratAdoptionProvisoireMemorise;
    }
    
     /**
     * Methode pour ajouter un contrat de cession de propriété à la BD
     * @param Contrat contrat
     * @param CessionPropriete contratCessionPropriete 
     * @return CessionPropriete $unContratCessionPropriete
     */
    public function ajouterContratCessionPropriete(Contrat $contrat, CessionPropriete $contratCessionPropriete) {
        $unContratCessionPropriete = NULL;
       
        $contratCessionPropriete->setContrat_id($contrat->getId());
        
        $SCcontratCessionPropriete = new SCcessionPropriete();
        $unContratCessionPropriete = $SCcontratCessionPropriete->ajouter($contratCessionPropriete);
           
        return $unContratCessionPropriete;
    }
    
     /**
     * Methode pour ajouter un contrat de placement à la BD
     * @param Contrat contrat
     * @param Placement contratPlacement 
     * @return Placement $unContratPlacement
     */
    public function ajouterContratPlacement(Contrat $contrat, Placement $contratPlacement) {
        $unContratPlacement = NULL;
       
        $contratPlacement->setContrat_id($contrat->getId());
        
        $SCcontratPlacement = new SCcontratPlacement();
        $unContratPlacement = $SCcontratPlacement->ajouter($contratPlacement);

        return $unContratPlacement;
    }
    
     /**
     * Methode pour ajouter un contrat de restitution à la BD
     * @param Contrat contrat
     * @param Restitution contratRestitution 
     * @return Restitution $unContratRestitution
     */
    public function ajouterContratRestitution(Contrat $contrat, Restitution $contratRestitution) {
        $unContratRestitution = NULL;
       
        $contratRestitution->setContrat_id($contrat->getId());
        
        $SCcontratRestitution = new SCcontratRestitution();
        $unContratRestitution = $SCcontratRestitution->ajouter($contratRestitution);
          
        return $unContratRestitution;
    }
    
    
     /*****************************MODIFIER**************************************/
    
    /**
     *  Methode pour modifier une personne
     * @param Contrat contrat à modifier
     */
    public function modifierContrat(Contrat $unContrat) {
        $unContratModifie=NULL;
        $SCcontrat = new SCcontrat();
        
        //Vérifier l'existence du contrat
        if ($SCcontrat->lister(new Contrat($unContrat->getId(), null, null, null, null)) != null) {
            $unContratModisssfie = $SCcontrat->modifier($unContrat);
        }
            
        return $unContratModifie;
    }
    
       /**
     * Methode pour modifier un contrat de pension à la BD
     * @param Pension contratPension a modifier
     * @return Pension $unContratPensionModifié
     */
    public function modifierContratPension(Pension $contratPension) {
        $unContratPensionModifie = NULL;
        
        $SCcontratPension = new SCcontratPension();
        if ($SCcontratPension->lister(new Pension($contratPension->getId(), null, null, null, null, $contratPension->getContrat_id())) != null) {
            $unContratPensionModifie = $SCcontratPension->modifier($contratPension);
   
        }
        

        return $unContratPensionModifie;
    }
    /*
    public function modifierContratPension(Pension $contratPension) {
        $unContratPensionModifie = NULL;
        $SCcontratPension = new SCcontratPension();
       
        $unContratPensionModifie = $SCcontratPension->modifier($contratPension);

        return $unContratPensionModifie;
    }
    
     /**
     * Methode pour modifier un contrat d'adoption provisoire à la BD
     * @param AdoptionProvisoire contratAdoptionProvisoire a modifier
     * @return AdoptionProvisoire $unContratAdoptionProvisoireModifie
     */
    public function modifierContratAdoptionProvisoire(AdoptionProvisoire $contratAdoptionProvisoire) {
        $unContratAdoptionProvisoireModifie = NULL;
        
        $SCcontratAdoptionProvisoire = new SCcontratAdoptionProvisoire();
        
        if ($SCcontratAdoptionProvisoire->lister(new AdoptionProvisoire($contratAdoptionProvisoire->getId(), null, null, null, null, $contratAdoptionProvisoire->getContrat_id())) != null) {
            $unContratAdoptionProvisoireModifie = $SCcontratAdoptionProvisoire->modifier($contratAdoptionProvisoire);
        }

        return $unContratAdoptionProvisoireModifie;
    }
    
     /**
     * Methode pour modifier un contrat de cession de propriété à la BD
     * @param CessionPropriete contratCessionPropriete 
     * @return CessionPropriete $unContratCessionProprieteModifie
     */
    public function modifierContratCessionPropriete(CessionPropriete $contratCessionPropriete) {
        $unContratCessionProprieteModifie = NULL;
        
        $SCcontratCessionPropriete = new SCcessionPropriete();
        if ($SCcontratCessionPropriete->lister(new CessionPropriete($contratCessionPropriete->getId(), $contratCessionPropriete->getContrat_id(), null)) != null) {
            $unContratCessionProprieteModifie = $SCcontratCessionPropriete->modifier($contratCessionPropriete);
        }
        
        return $unContratCessionProprieteModifie;
    }
    
     /**
     * Methode pour modifier un contrat de placement à la BD
     * @param Placement contratPlacement 
     * @return Placement $unContratPlacementModifie
     */
    public function modifierContratPlacement(Placement $contratPlacement) {
        $unContratPlacementModifie = NULL;
        
        $SCcontratPlacement = new SCcontratPlacement();
        if ($SCcontratPlacement->lister(new Placement($contratPlacement->getId(), null, null, null, null, null, null, $contratPlacement->getContrat_id())) != null) {    
            $unContratPlacementModifie = $SCcontratPlacement->modifier($contratPlacement);
        }
        return $unContratPlacementModifie;
    }
    
     /**
     * Methode pour modifier un contrat de restitution à la BD
     * @param Restitution contratRestitution 
     * @return Restitution $unContratRestitutionModifie
     */
    public function modifierContratRestitution(Restitution $contratRestitution) {
        $unContratRestitutionModifie = NULL;
       
        $SCcontratRestitution = new SCcontratRestitution();
        if ($SCcontratRestitution->lister(new Restitution($contratRestitution->getId(), null, $contratRestitution->getContrat_id())) != null) {
            $unContratRestitution = $SCcontratRestitution->modifier($contratRestitution);
        }  
        return $unContratRestitutionModifie;
    }
    
    /*****************************LISTER**************************************/
    
    /**
     * Methode pour lister les Contrats de pension selon les critères sélectionnés
     * @param type $contratPension une Pension
     */
    public function listerContratPension($contratPension, $type) {
        $SCcontrat = new SCcontrat();
        return $listeContratPension = $SCcontrat->lister($contratPension, $type);
    }
    
    public function lister($contrat) {

        $SCcontrat = new SCContrat();
        return $SCcontrat->listerContratSimple($contrat);

    }
    
   /*****************************SUPPRIMER**************************************/
    //Pas implémenté de suite
}
?>
